package com.bitcs.accesscontrol.dao.mapper;

import com.bitcs.accesscontrol.dao.entity.AccessControlPO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * @author GeChen
 * @Description
 * @date 2019/11/12 16:54
 */
@Mapper
public interface AccessControllMapper {
    /**
     * 得到所有的权限信息
     *
     * @return
     */
    List<AccessControlPO> getAllPOs();

    /**
     * 根据appId和type查询权限信息
     *
     * @param appId
     * @param type
     * @return
     */
    AccessControlPO getPOByAppidAndType(@Param("appId") String appId, @Param("type") String type);

    /**
     * 根据appId查询权限信息
     *
     * @param appId
     * @return
     */
    List<AccessControlPO> getPOByAppid(String appId);

    /**
     * 将日志加入到记录表
     *
     * @param operationName
     * @param methodName
     * @param exceptionDetail
     * @param params
     * @param transferTime
     * @param remoteAddr
     * @param remotePort
     * @return
     */
    int insertAccessLog(@Param("operationName") String operationName,
                        @Param("methodName") String methodName,
                        @Param("exceptionDetail") String exceptionDetail,
                        @Param("params") String params,
                        @Param("transferTime") Date transferTime,
                        @Param("remoteAddr") String remoteAddr,
                        @Param("remotePort") int remotePort);

    /**
     * 根据主键信息减少剩余次数
     *
     * @param id
     */
    void updateRemainCount(int id);
}
